<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>test</title>
<script>

//【示例1】看看下面这3行代码：
alert(n=5-2*2);					// 返回1
alert(n=(5-2)*2); 					// 返回6
alert((n=5-2)*2); 					// 返回6



alert((1+n=5-2)*2); 				// 返回异常
//【示例2】根据运算符的运算顺序，下面代码是按着先右后左的顺序执行运算的。typeof 5运算结果是number，而返回结果“number”又是一个字符串，所以typeof typeof 5最终返回string。
alert(typeof typeof 5); 			// 返回string

alert(typeof (typeof 5));		 	// 返回string

1+2+3+4

((1+2)+3)+4

//【示例3】下面代码中，两个运算数都是字符串，但是JavaScript会自动把两个操作数转换为数字，并执行减法运算，返回数字结果。
alert("10"-"20");					// 返回-10

alert(0?1:2); 						// 返回-2

alert(3>"5"); 						// 返回false
alert(3>"2"); 						// 返回true

alert("string">5); 					// 返回false

alert(10+20); 						// 返回30
alert("10"+"20"); 					// 返回"1020"

alert(true*"5"); 					// 返回5

//【示例4】在下面代码段中，变量a经过赋值运算和递加运算之后，该变量的值发生了两次变化。
var a;
a = 0;
a++;
alert(a); 							// 返回1

var a;
a = 1;
a = (a++)+(++a)-(a++)-(++a);
alert(a); 							// 返回-4

var a;
a = 1; 					// 变量初始化
b = a++;				// b等于1，变量a先把值1赋值给变量b，然后再递加为2
c = ++a; 				// c等于3，变量a先递加为3后，再把值3赋值给变量c
d = a++;				// d等于3，变量a先把值3赋值给变量d，然后再递加为4
e = ++a; 				// e等于5，变量a先递加为5后，再把值5赋值给变量e
alert(b+c-d-e); 		// 返回-4
//【示例5】下面代码行虽然看起来比较复杂疼，但是由于每个运算数仅执行了一次引起自身值变化的运算，所以不会制造歧义，也不会扰乱思维。
a = (b++)+(++c)-(d++)-(++e);


</script>
</head>
<body>




</body>
</html>
